#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>
#include <string.h>

// 枚举就是int类型，占4字节。
enum MY_ENUM_FUN1
{
    MY_ENUM_FUN1_0 = 0,
    MY_ENUM_FUN1_1,
    MY_ENUM_FUN1_MAX,
};

enum MY_ENUM_FUN2
{
    MY_ENUM_FUN2_0 = (uint64_t)0,
    MY_ENUM_FUN2_1,
    MY_ENUM_FUN2_2,
    MY_ENUM_FUN2_MAX,
};

void myPrintFun(enum MY_ENUM_FUN1 pev)
{
    printf("[%s,%d]enum = %d\n", __FILE__, __LINE__, pev);
}

int main(int argc, char **argv)
{
    // __func__是函数名字符串。
    {
        enum MY_ENUM_FUN1 tmp_enum = MY_ENUM_FUN1_0;
        printf("[%s,%d]enum 1 = %d, sizeof()=%d\n", __func__, __LINE__, tmp_enum, (int)sizeof(tmp_enum));
    }
    {
        enum MY_ENUM_FUN2 tmp_enum = MY_ENUM_FUN2_1;
        printf("[%s,%d]enum 2 = %d, sizeof()=%d\n", __func__, __LINE__, tmp_enum, (int)sizeof(tmp_enum));
    }
    {
        // 枚举可以保存不在自己列表的值。
        enum MY_ENUM_FUN1 tmp_enum1 = 10;
        printf("[%s,%d]enum = %d\n", __func__, __LINE__, tmp_enum1);
    }
    {
        myPrintFun(-10);
    }
    return 1;
}
